static void enter_set_ignore_threshold(uv_async_t * handle);
static void enter_set_name(uv_async_t * handle);
static void enter_set_password(uv_async_t * handle);
+static void enter_series_all(uv_async_t * handle);
static void enter_series_name(uv_async_t * handle);
static void enter_series_match(uv_async_t * handle);
static void enter_series_re(uv_async_t * handle);
siriparser_listen_enter[CLERI_GID_SET_PASSWORD] = enter_set_password;
siriparser_listen_enter[CLERI_GID_SERIES_COLUMNS] = enter_xxx_columns;
siriparser_listen_enter[CLERI_GID_SERVER_COLUMNS] = enter_xxx_columns;
+ siriparser_listen_enter[CLERI_GID_SERIES_ALL] = enter_series_all;
siriparser_listen_enter[CLERI_GID_SERIES_NAME] = enter_series_name;
siriparser_listen_enter[CLERI_GID_SERIES_MATCH] = enter_series_match;
siriparser_listen_enter[CLERI_GID_SERIES_RE] = enter_series_re;
/* child is always the ',' and child->next the node */
child = query->nodes->node->children->next->node->children;
skip_get_points = siridb_aggregate_can_skip(child);
- LOGC("Skip?... %d", skip_get_points);
child = child->next;
while (child != NULL)
if (skip_get_points)
{
- LOGC("Set skip... %d", skip_get_points);
q_select->flags |= QUERIES_SKIP_GET_POINTS;
}
{
siridb_query_t * query = (siridb_query_t *) handle->data;
siridb_t * siridb = ((sirinet_socket_t *) query->client->data)->siridb;
- cleri_node_t * node = query->nodes->node;
+ siridb_series_t * series;
query_wrapper_t * q_wrapper = (query_wrapper_t *) query->data;
/* we must send this query to all pools */
q_wrapper->pmap = NULL;
}
- if (q_wrapper->update_cb != NULL)
- {
- (*q_wrapper->update_cb)(
- q_wrapper->series_map,
- q_wrapper->series_tmp,
- (imap_free_cb) &siridb__series_decref);
- }
- q_wrapper->series_tmp = NULL;
-
- uv_mutex_lock(&siridb->series_mutex);
-
- q_wrapper->slist = imap_2slist_ref(
- ( q_wrapper->update_cb == NULL ||
- q_wrapper->update_cb == &imap_union_ref ||
- q_wrapper->update_cb == &imap_symmetric_difference_ref) ?
- siridb->series_map : q_wrapper->series_map);
+ uv_mutex_lock(&siridb->series_mutex);
- uv_mutex_unlock(&siridb->series_mutex);
+ q_wrapper->slist = imap_2slist_ref(
+ ( q_wrapper->update_cb == NULL ||
+ q_wrapper->update_cb == &imap_union_ref ||
+ q_wrapper->update_cb == &imap_symmetric_difference_ref) ?
+ siridb->series_map : q_wrapper->series_map);
- q_wrapper->series_tmp = (q_wrapper->update_cb == NULL) ?
- q_wrapper->series_map : imap_new();
+ uv_mutex_unlock(&siridb->series_mutex);
- if (q_wrapper->slist == NULL || q_wrapper->series_tmp == NULL)
- {
- MEM_ERR_RET
- }
+ q_wrapper->series_tmp = (q_wrapper->update_cb == NULL) ?
+ q_wrapper->series_map : imap_new();
- uv_async_t * next =
- (uv_async_t *) malloc(sizeof(uv_async_t));
+ if (q_wrapper->slist == NULL || q_wrapper->series_tmp == NULL)
+ {
+ MEM_ERR_RET
+ }
- if (next == NULL)
+ for (q_wrapper->slist_index = 0;
+ q_wrapper->slist_index < q_wrapper->slist->len;
+ ++q_wrapper->slist_index)
+ {
+ series = q_wrapper->slist->data[q_wrapper->slist_index];
+ if (imap_add(q_wrapper->series_tmp, series->id, series))
{
MEM_ERR_RET
}
+ }
- next->data = handle->data;
-
- uv_async_init(
- siri.loop,
- next,
- (uv_async_cb) async_series_re);
- uv_async_send(next);
+ slist_free(q_wrapper->slist);
+ q_wrapper->slist = NULL;
+ q_wrapper->slist_index = 0;
- uv_close((uv_handle_t *) handle, (uv_close_cb) free);
+ if (q_wrapper->update_cb != NULL)
+ {
+ (*q_wrapper->update_cb)(
+ q_wrapper->series_map,
+ q_wrapper->series_tmp,
+ (imap_free_cb) &siridb__series_decref);
}
- /* handle is handled or a signal is raised */
+ q_wrapper->series_tmp = NULL;
+ SIRIPARSER_ASYNC_NEXT_NODE
}
static void enter_series_re(uv_async_t * handle)